package com.softeem.score.manager.mapper;

import com.softeem.score.model.dto.TeachingClassDto;
import com.softeem.score.model.entity.educational.TeachingClass;
import com.softeem.score.model.vo.educational.ElectiveCourseVo;
import com.softeem.score.model.vo.educational.TeachingClassVo;
import com.softeem.score.model.vo.school.MapVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TeachingClassMapper {

    List<TeachingClassVo> findByPage(TeachingClassDto teachingClassDto);

    void deleteById(Long teachingClassId);

    void saveTeachingClass(TeachingClass teachingClass);

    void updateTeachingClass(TeachingClass teachingClass);

    Integer findStudentNumByTeachingClassId(Long teachingClassId);

    void deleteStudentByTeachingClassId(@Param("teachingClassId") Long teachingClassId);

    List<MapVo> findAllClassByTeachingClass(@Param("courseId") Long courseId, @Param("academicYear") Integer academicYear, @Param("semester") Integer semester);

    void updateTeachingClassClassesId(@Param("classesId") Long classesId, @Param("teachingClassId") Long teachingClassId);

    List<ElectiveCourseVo> findByPageByOwnership(@Param("ownership") Integer ownership);

    List<ElectiveCourseVo> getElectiveCourse(@Param("studentNumber") String studentNumber);

    void studentsCourseAdd(@Param("studentNumber") String studentNumber, @Param("teachingClassId") Long teachingClassId);

    void studentsCourseDelete(@Param("studentNumber") String studentNumber, @Param("teachingClassId") Long teachingClassId);

    TeachingClass getCourseIdByTeachingClass(Long teachingClassId);

    List<Long> FindAllByCourseId(Long courseId);

    TeachingClass findByTeachingClassId(Long teachingClassId);
}
